package com.lcx.movie.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lcx.movie.entity.Stats;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface StatsMapper extends BaseMapper<Stats> {
    /**
     * // 统计用户人数
     * @return 受影响的行数
     */
    @Select("select count(user_id) from user")
    int getUserCount();

    /**
     * // 统计电影数量
     * @return 受影响的行数
     */
    @Select("select count(movie_id) from movie")
    int getMovieCount();

    /**
     *  // 统计影院数量
     * @return 受影响的行数
     */
    @Select("select count(cinema_id) from cinema")
    int getCinemaCount();

    /**
     * // 统计评论数量
     * @return 受影响的行数
     */
    @Select("select count(comment_id) from comment")
    int getCommentCount();

    /**
     * // 统计影院管理员所有的影片数量
     * @param cinemaId 影院id
     * @return 受影响的行数
     */
    @Select("select count(movie_id) from movie where cinema_id=#{cinemaId} ")
    int getCinemaManageMovie(int cinemaId);

    /**
     * // 统计影院管理员所有的放映厅数量
     * @param cinemaId 影院id
     * @return 受影响的行数
     */
    @Select("select count(hall_id) from hall where cinema_id=#{cinemaId}")
    int getCinemaManageHall(int cinemaId);

    /**
     * // 统计平台有多少放映厅
     * @return 受影响的行数
     */
    @Select("select count(hall_id) from hall")
    int getHallCounts();

    /**
     *  // 统计平台场次数量
     * @return 受影响的行数
     */
    @Select("select count(schedule_id) from schedule")
    int getScheduleCounts();

    /**
     * // 统计平台座位数量
     * @return 受影响的行数
     */
    @Select("select count(seat_id) from seats")
    int getSeatsCount();

    /**
     * // 统计平台零食种类数量
     * @return 受影响的行数
     */
    @Select("select count(SnackID) from snacks")
    int getSnackCount();

    /**
     * // 统计平台 封禁用户的数量
     * @return 受影响的行数
     */
    @Select("select count(ban_id) from user_ban where ban_status=0 or ban_status=2")
    int getBanCount();

    /**
     * // 统计影院有多少场次
     * @param cinemaId 影院id
     * @return 受影响的行数
     */
    @Select("SELECT COUNT(s.schedule_id) \n" +
            "FROM hall h\n" +
            "JOIN schedule s ON h.hall_id = s.hall_id\n" +
            "WHERE h.cinema_id = #{cinemaId};")
    int getCinemaManageSchedule(int cinemaId);

    /**
     * // 根据影院id查询座位数量
     * @param cinemaId 影院id
     * @return 受影响的行数
     */
    @Select("SELECT COUNT(s.seat_id) AS total_seat_count\n" +
            "FROM hall h\n" +
            "JOIN seats s ON h.hall_id = s.hall_id\n" +
            "WHERE h.cinema_id = #{cinemaId} ;")
    int getCinemaManageSeats(int cinemaId);

    /**
     * // 根据影院id查询电影票的营业额
     * @param cinemaId 影院id
     * @return 受影响的行数
     */
    @Select("SELECT SUM(o.order_price) AS total_turnover\n" +
            "FROM orderinfo o\n" +
            "JOIN schedule s ON o.schedule_id = s.schedule_id\n" +
            "JOIN hall h ON s.hall_id = h.hall_id\n" +
            "WHERE h.cinema_id = #{cinemaId};")
    int getCinemaManageMoviePrice(int cinemaId);

    /**
     * // 根据影院id查询出电影的评论数量
     * @param cinemaId 影院id
     * @return 受影响的行数
     */
    @Select("SELECT COUNT(c.comment_id) AS comment_count\n" +
            "FROM comment c\n" +
            "JOIN schedule s ON c.movie_id = s.movie_id\n" +
            "JOIN hall h ON s.hall_id = h.hall_id\n" +
            "WHERE h.cinema_id = #{cinemaId};")
    int getCinemaManageMovieComment(int cinemaId);

    /**
     * 获取数据
     * @return 数据实体
     */
    public Stats getStats();

}
